
package br.net.atasacramental.discurso.dao;
import br.net.atasacramental.discurso.model.Discurso;
import br.net.atasacramental.util.ConexaoDB;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author root
 */
public class DiscursoDAO{
	private String[][] ordemP = {{"idDiscurso", "desc"}};
    /* select concat(d.idReuniao,0,d.idMembro)  as idDiscurso,d.* from discurso d */
	@SuppressWarnings("unchecked")
    public List<Discurso> get(){
    	return (List<Discurso>) ConexaoDB.get(Discurso.class,true,1,100,null,ordemP);        
    }
	@SuppressWarnings("unchecked")
    public List<Discurso> getLast(){
    	return (List<Discurso>) ConexaoDB.getLast(Discurso.class,"idDiscurso");
    }
    public Discurso getByIdDiscurso(int idDiscurso){
    	return (Discurso) ConexaoDB.getById(Discurso.class,idDiscurso);
    }
    @SuppressWarnings("unchecked")
    public List<Discurso> getByPeriodo(Date DtaI,Date DtaF){
		DtaF.setTime(DtaF.getTime()+86399999L);
		String[][] ordemP2 = {{"momento","asc"},{"tempo","asc"}};
		return (List<Discurso>) ConexaoDB.getBetween(Discurso.class,true,1,100,"momento",DtaI,DtaF,ordemP2);
	} 
    @SuppressWarnings("unchecked")
    public List<Discurso> getRecentes(){  
    	Date DtaI = new Date();
    	Date DtaF = new Date();
    	Long mes = 2678400000L;    
    	DtaI.setTime(DtaI.getTime());
    	DtaF.setTime(DtaF.getTime()+mes*3);
    	return (List<Discurso>) ConexaoDB.getBetween(Discurso.class,true,1,100,"momento",DtaI,DtaF,ordemP);
     } 
    @SuppressWarnings("unchecked")
    public List<Discurso> getByIdReuniao(int idReuniao){
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("idReuniao", idReuniao);
     	String[][] ordemP2 = {{"tempo", "asc"}};
        return (List<Discurso>) ConexaoDB.get(Discurso.class,true,1,100,params,ordemP2);
    }
    private void formatarDiscurso(Discurso disv){
    	if(disv.getFonte()!=null){
    		disv.setFonte(disv.getFonte().toLowerCase());
    	}else{
    		disv.setFonte("fonte");
    	}
    }
    public boolean insert(Discurso disv){
    	this.formatarDiscurso(disv);
        return ConexaoDB.insert(disv);
    }   
    public boolean update(Discurso disv){
    	this.formatarDiscurso(disv);
        return ConexaoDB.update(disv);
    }
    public boolean delete(Discurso disv){
        return ConexaoDB.delete(disv);
    }
}
